using System;

namespace EventBus
{
    public interface IRemoveFuncEventListener
    {
        void RemoveListen<TResult>(string eventName, Func<TResult> callback);
        void RemoveListen<T1, TResult>(string eventName, Func<T1, TResult> callback);
        void RemoveListen<T1, T2, TResult>(string eventName,  Func<T1, T2, TResult> callback);
        void RemoveListen<T1, T2, T3, TResult>(string eventName,  Func<T1, T2, T3, TResult> callback);
        void RemoveListen<T1, T2, T3, T4, TResult>(string eventName,  Func<T1, T2, T3, T4, TResult> callback);
        void RemoveListen<T1, T2, T3, T4, T5, TResult>(string eventName,  Func<T1, T2, T3, T4, T5, TResult> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6, TResult>(string eventName,  Func<T1, T2, T3, T4, T5, T6, TResult> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6, T7, TResult>(string eventName,  Func<T1, T2, T3, T4, T5, T6, T7, TResult> callback);
        void RemoveListen<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(string eventName,  Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> callback);
    }
}